home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 3 / Cream of the Crop 3.iso / comm / wnos5src.zip / SOCKET.H < prev    next >
C/C++ Source or Header  |  1993-10-03  |  6KB  |  193 lines

  1. #ifndef    _SOCKET_H
  2. #define    _SOCKET_H
  3.  
  4. #ifndef    _GLOBAL_H
  5. #include "global.h"
  6. #endif
  7.  
  8. #ifdef    ANSIPROTO
  9. #include <stdarg.h>
  10. #endif
  11.  
  12. #ifndef    _MBUF_H
  13. #include "mbuf.h"
  14. #endif
  15.  
  16. #ifndef _PROC_H
  17. #include "proc.h"
  18. #endif
  19.  
  20. /* Local IP wildcard address */
  21. #define    INADDR_ANY        0x0L
  22.  
  23. /* IP protocol numbers */
  24. #define    IPPROTO_ICMP    1
  25. #define    IPPROTO_TCP        6
  26. #define    IPPROTO_UDP        17
  27. #define IPPROTO_AX25    93
  28. #define    IPPROTO_IP        94
  29.  
  30. /* TCP port numbers */
  31. #define    IPPORT_ECHO        7        /* Echo data port */
  32. #define    IPPORT_DISCARD    9        /* Discard data port */
  33. #define    IPPORT_FTPD        20        /* FTP Data port */
  34. #define    IPPORT_FTP        21        /* FTP Control port */
  35. #define IPPORT_TELNET    23        /* Telnet port */
  36. #define IPPORT_SMTP        25        /* Mail port */
  37. #define    IPPORT_FINGER    79        /* Finger port */
  38. #define    IPPORT_TTYLINK    87        /* Chat port */
  39. #define IPPORT_POP        109     /* POP port */
  40. #define    IPPORT_NNTP        119        /* Netnews port */
  41. #define IPPORT_CONVERS    3600    /* Conversd server */
  42. #define IPPORT_XCONVERS 3601    /* compressed convers */
  43.  
  44. /* UDP port numbers */
  45. #define IPPORT_TIME     37
  46. #define    IPPORT_DOMAIN    53
  47. #define    IPPORT_REMOTE    1234    /* Pulled out of the air */
  48.  
  49. #define    AF_INET            0
  50. #define    AF_AX25            1
  51. #define AF_NETROM        2
  52. #define    AF_LOCAL        3
  53.  
  54. #define    SOCK_STREAM        0
  55. #define    SOCK_DGRAM        1
  56. #define    SOCK_RAW        2
  57. #define SOCK_SEQPACKET    3
  58.  
  59. /* Socket flag values - controls newline mapping */
  60. #define    SOCK_BINARY        0        /* socket in raw (binary) mode */
  61. #define    SOCK_ASCII        1        /* socket in cooked (newline mapping) mode */
  62. #define    SOCK_QUERY        2        /* Return setting without change */
  63.  
  64. #define    EMFILE            1
  65. #define    EBADF            2
  66. #define    EINVAL            3
  67. #define    ESOCKTNOSUPPORT    4
  68. #define    EAFNOSUPPORT    5
  69. #define    EOPNOTSUPP        6
  70. #define    EFAULT            7
  71. #define    ENOTCONN        8
  72. #define    ECONNREFUSED    9
  73. #define EAFNOSUPP        10
  74. #define    EISCONN            11
  75. #define    EWOULDBLOCK        12
  76. #define    EINTR            13
  77. #define    EADDRINUSE        14
  78. #define    ENOMEM            15
  79. #define EMSGSIZE        16
  80. #define    EALARM            17
  81. #define    EABORT            18
  82.  
  83. /* Berkeley format socket address structures. These things were rather
  84.  * poorly thought out, but compatibility is important (or so they say).
  85.  * Note that all the sockaddr variants must be of the same size, 16 bytes
  86.  * to be specific. Although attempts have been made to account for alignment
  87.  * requirements (notably in sockaddr_ax), porters should check each
  88.  * structure.
  89.  */
  90.  
  91. /* Generic socket address structure */
  92. struct sockaddr {
  93.     short sa_family;
  94.     char sa_data[14];
  95. };
  96.  
  97. /* This is a structure for "historical" reasons (whatever they are) */
  98. struct in_addr {
  99.     unsigned long s_addr;
  100. };
  101.  
  102. /* AX.25 sockaddr stuff */
  103. #define    AXALEN        7
  104.  
  105. /* Number of chars in interface field. The involved definition takes possible
  106.  * alignment requirements into account, since ax25_addr is of an odd size.
  107.  */
  108. #define    ILEN    (sizeof(struct sockaddr) - sizeof(short) - AXALEN)
  109.  
  110. /* Socket address, AX.25 style */
  111. struct sockaddr_ax {
  112.     short sax_family;        /* 2 bytes */
  113.     char ax25_addr[AXALEN];
  114.     char iface[ILEN];        /* Interface name */
  115. };
  116.  
  117. /* Socket address, DARPA Internet style */
  118. struct sockaddr_in {
  119.     short sin_family;
  120.     unsigned short sin_port;
  121.     struct in_addr sin_addr;
  122.     char sin_zero[8];
  123. };
  124.  
  125. /* Netrom socket address. */
  126. #ifndef NR4MAXCIRC
  127. struct nr4_addr {
  128.     char user[AXALEN];
  129.     char node[AXALEN];
  130. };
  131. #endif
  132.  
  133. struct sockaddr_nr {
  134.     short nr_family;
  135.     struct nr4_addr nr_addr;
  136. };
  137.  
  138. #define    SOCKSIZE    (sizeof(struct sockaddr))
  139. #define MAXSOCKSIZE    SOCKSIZE /* All sockets are of the same size for now */
  140. extern int32 Ip_addr;
  141.  
  142. /* In socket.c: */
  143. extern int Axi_sock;    /* Socket listening to AX25 (there can be only one) */
  144.  
  145. int accept __ARGS((int s,char *peername,int *peernamelen));
  146. int bind __ARGS((int s,char *name,int namelen));
  147. int close_s __ARGS((int s));
  148. int connect __ARGS((int s,char *peername,int peernamelen));
  149. void freesock __ARGS((struct proc *pp));
  150. int getpeername __ARGS((int s,char *peername,int *peernamelen));
  151. int getsockname __ARGS((int s,char *name,int *namelen));
  152. int listen __ARGS((int s,int backlog));
  153. int recv_mbuf __ARGS((int s,struct mbuf **bpp,int flags,char *from,int *fromlen));
  154. int send_mbuf __ARGS((int s,struct mbuf *bp,int flags,char *to,int tolen));
  155. int setflush __ARGS((int s,int c));
  156. int shutdown __ARGS((int s,int how));
  157. int socket __ARGS((int af,int type,int protocol));
  158. void sockinit __ARGS((void));
  159. int sockkick __ARGS((int s));
  160. int socklen __ARGS((int s,int rtx));
  161. struct proc *sockowner __ARGS((int s,struct proc *newowner));
  162. int usesock __ARGS((int s));
  163.  
  164. /* In sockuser.c: */
  165. void flushsocks __ARGS((void));
  166. int keywait __ARGS((char *prompt,int flush));
  167. int recv __ARGS((int s,char *buf,int len,int flags));
  168. int recvchar __ARGS((int s));
  169. int recvfrom __ARGS((int s,char *buf,int len,int flags,char *from,int *fromlen));
  170. int recvline __ARGS((int s,char *buf,unsigned len));
  171. int rrecvchar __ARGS((int s));
  172. int send __ARGS((int s,char *buf,int len,int flags));
  173. int sendto __ARGS((int s,char *buf,int len,int flags,char *to,int tolen));
  174. int seteol __ARGS((int s,char *seq));
  175. int sockmode __ARGS((int s,int mode));
  176. void tflush __ARGS((void));
  177. int tprintf __ARGS((char *fmt,...));
  178. int tputc __ARGS((char c));
  179. int tputs __ARGS((char *s));
  180. int usflush __ARGS((int s));
  181. int usprintf __ARGS((int s,char *fmt,...));
  182. int usputc __ARGS((int s,char c));
  183. int usputs __ARGS((int s,char *x));
  184. /*
  185. int usvprintf __ARGS((int s,char *fmt, va_list args));
  186. */
  187. /* In file sockutil.c: */
  188. char *psocket __ARGS((void *p));
  189. char *sockerr __ARGS((int s));
  190. char *sockstate __ARGS((int s));
  191.  
  192. #endif    /* _SOCKET_H */
  193.